/*
   Copyright 2009 Abdulla Abdurakhmanov (abdulla@latestbit.com)
   Original sources are available at www.latestbit.com

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*/

package org.latestbit.smartobjects.smartidlc;

import org.lineargs.*;

public class CompilerOptions {
	@Option ( name="--fileName", shortName="-f", description="SmartIDL filename to compile", isOptional=false)
	private String fileName;
	
	@Option ( name="--target", shortName="-t", description="Target module (language type) ('java', 'cs', 'cpp')", isOptional=false)
	private String target;

	@Option ( name="--targets-path", shortName="-tp", description="Directory to target modules", isOptional=true)
	private String targetModulesPath = null;	

	@Option ( name="--target-args", shortName="-ta", description="Specific target module additional arguments)", isOptional=true)
	private String targetArgs;
	
	@Option ( name="--path", shortName="-cp", description="Path to other imported SmartIDL files/directories", isOptional=true)
	private String importedPath;

	@Option ( name="--output", shortName="-o", description="The output directory", isOptional=true)
	private String outputDir = "./";

	@Option ( name="--verbose", shortName="-v", description="Enable verbose output", isOptional=true)
	private Boolean verboseOutput = false;
	
	@Option ( name="--very-verbose", shortName="-vv", description="Enable extra verbose output", isOptional=true)
	private Boolean veryVerboseOutput = false;	
	
	@Option ( name="--disable-beautifier", shortName="-df", description="Disable external code beautifier", isOptional=true)
	private Boolean disableBeautifier = false;
	
	
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	public String getFileName() {
		return fileName;
	}	

	public void setOutputDir(String outputDir) {
		this.outputDir = outputDir;
	}

	public String getOutputDir() {
		return outputDir;
	}

	public void setImportedPath(String importedPath) {
		this.importedPath = importedPath;
	}

	public String getImportedPath() {
		return importedPath;
	}

	public void setTarget(String target) {
		this.target = target;
	}

	public String getTarget() {
		return target;
	}

	public void setTargetModulesPath(String targetModulesPath) {
		this.targetModulesPath = targetModulesPath;
	}

	public String getTargetModulesPath() {
		return targetModulesPath;
	}

	public void setVerboseOutput(boolean verboseOutput) {
		this.verboseOutput = verboseOutput;
	}

	public boolean isVerboseOutput() {
		return verboseOutput;
	}

	public void setDisableBeautifier(Boolean disableBeautifier) {
		this.disableBeautifier = disableBeautifier;
	}

	public Boolean isDisableBeautifier() {
		return disableBeautifier;
	}

	public void setTargetArgs(String targetArgs) {
		this.targetArgs = targetArgs;
	}

	public String getTargetArgs() {
		return targetArgs;
	}

	public void setVeryVerboseOutput(Boolean veryVerboseOutput) {
		this.veryVerboseOutput = veryVerboseOutput;
		if(this.veryVerboseOutput)
			this.verboseOutput = true; 
	}

	public boolean isVeryVerboseOutput() {
		return veryVerboseOutput;
	}
	
}
